package com.ecloud.common.data.dynamic;

import java.util.Map;

import javax.sql.DataSource;

/**
 * 动态数据源
 *
 * @author LiuGangQiang Create in 2021/04/27
 */
public interface IDynamicDataSource {
    /**
     * 添删除数据源
     *
     * @author LiuGangQiang Create in 2021/04/27
     * @param key 数据源标识
     * @return {@link Boolean}
     */
    public boolean delDataSource(String key);

    /**
     * 添加数据源
     *
     * @author LiuGangQiang Create in 2021/04/27
     * @param key 数据源标识
     * @return {@link Boolean}
     */
    public boolean addDataSource(String key);

    /**
     * 根据数据源标识灵活注册数据源<br>
     * 可以从文件中读取也可以从数据库中读取<br>
     * 你也可以注入不同类型的数据源
     *
     * @author LiuGangQiang Create in 2021/04/30
     * @param key 数据源标识
     * @return {@link DataSource}
     */
    public abstract DataSource registerDataSource(String key);

    /**
     * 设置数据源
     *
     * @author LiuGangQiang Create in 2021/04/27
     * @param dataSources 数据源集合
     */
    public void setDataSources(Map<Object, Object> dataSources);
}
